package net.danielthompson.danray.cameras;

import net.danielthompson.danray.structures.Point;
import net.danielthompson.danray.structures.Vector;

/**
 * Created by daniel on 1/12/14.
 */
public interface Camera {

   /**
    * Returns the point in world space that is represented by the pixel (x, y).
    * @param x
    * @param y
    * @return
    */
   Point GetWorldPointForPixel(int x, int y);

   /**
    * Returns the point in world space that is represented by the subpixel (x, y).
    * @param x
    * @param y
    * @return
    */
   Point GetWorldPointForPixel(double x, double y);


   Vector[] GetInitialStochasticRaysForPixel(double x, double y, int SamplesPerPixel);

   Vector[] GetInitialStochasticRaysForPixel(int x, int y, int SamplesPerPixel);

   Vector GetStochasticRayForPixel(double x, double y);
}
